package com.scpii.universal.pns.service;

import java.util.List;
import java.util.Map;

import com.scpii.universal.pns.dto.ClientUserDto;
import com.scpii.universal.pns.dto.FieldImageDto;
import com.scpii.universal.pns.dto.UserConfigDto;
import com.scpii.universal.pns.dto.UserDetailDto;
import com.scpii.universal.pns.entity.Devices;
import com.scpii.universal.pns.entity.Field;
import com.scpii.universal.pns.entity.UserActionPointConfig;
import com.scpii.universal.pns.entity.UserPointRanks;
import com.scpii.universal.pns.entity.Users;

public interface ClientUserManageService {
	/**
	 * 获取用户信息列表
	 * 
	 * @param appId
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	public List<Map<String, Object>> getClientUserInit(Integer appId,
			ClientUserDto condition, Integer pageNo, Integer pageSize);

	/**
	 * 获取用户信息条数
	 * 
	 * @param appId
	 * @return
	 */
	public Integer getClientUserInitCount(Integer appId, ClientUserDto condition);

	/**
	 * 获取终端类型
	 * 
	 * @param appId
	 * @return
	 */
	public List<Devices> getDeviceInfoByAppId(Integer appId);

	public void getUserLinks(ClientUserDto userDto);

	/**
	 * 获取用户的基础信息
	 * 
	 * @param userId
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	public ClientUserDto getUserDetailInfo(Long userId);

	/**
	 * 获取用户配置
	 * 
	 * @param appId
	 * @param userId
	 * @return
	 */
	public List<Field> getUserFields(Integer appId, Long userId);

	public List<UserDetailDto> getUserActionsByUserId(Long userId,
			Integer pageNo, Integer pageSize);

	public Integer getUserActionsByUserIdCount(Long userId);

	/**
	 * 用户等级配置初始化
	 * 
	 * @param appId
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	public List<UserPointRanks> getUserLevelInit(Integer appId, Integer pageNo,
			Integer pageSize);

	/**
	 * 获取用户等级
	 * 
	 * @param appId
	 * @return
	 */
	public Integer getUserLevelInitCount(Integer appId);

	/**
	 * 新增用户等级
	 * 
	 * @param userPointRanks
	 */
	public void saveUserLevel(UserPointRanks userPointRanks);

	/**
	 * 获取用户等级
	 * 
	 * @param id
	 * @return
	 */
	public UserPointRanks getUserLevel(Long id);

	/**
	 * 更新用户等级
	 * 
	 * @param userPointRanks
	 */
	public void updateUserLevel(UserPointRanks userPointRanks);

	/**
	 * 删除用户等级
	 * 
	 * @param id
	 */
	public void removeUserLevel(Long id);

	/**
	 * 获取用户配置信息
	 * 
	 * @param appId
	 * @param userId
	 * @return
	 */
	public UserConfigDto saveUserConfigInit(Integer appId, Long userId);

	/**
	 * 保存和查询用户配置信息
	 * 
	 * @param userConfigDto
	 * @param appId
	 * @param userId
	 * @param imageList
	 */
	public void saveUserConfig(UserConfigDto userConfigDto, Integer appId,
			Long userId, List<FieldImageDto> imageList);

	/**
	 * 更改用户配置信息
	 * 
	 * @param userConfigDto
	 * @param appId
	 */
	public void updateUserConfigPre(UserConfigDto userConfigDto, Integer appId);

	/**
	 * 删除用户配置字段
	 * 
	 * @param id
	 */
	public void removeUserField(Long id);

	// ------------积分配置规则start

	List<UserActionPointConfig> getPointConfigInit(Integer appId,
			Integer pageNo, Integer pageSize);

	Integer getPointConfigInitCount(Integer appId);

	public void saveUsePoint(UserActionPointConfig pointConfig, Integer appId,
			Long intUserId);

	public boolean getPointConfigByTypeAndTarget(String actionType,
			Long targetId, Integer appId);

	public void removePointConfigById(Long id);

	public UserActionPointConfig getPointConfig(Long id);

	public void updatePointConfig(UserActionPointConfig pointConfig,
			Long intUserId);

	public String[] getUserNamesByIds(String[] userIds);

	public Boolean checkUserName(String userName, Integer appId);

	public void saveUsers(Users users);

	// ------------积分配置规则end

}
